home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / ietf / urn / urn-archives / urn-ietf.archive.9608 / 000009_owner-urn-ietf _Tue Aug 13 15:55:41 1996.msg < prev    next >
Internet Message Format  |  1997-02-19  |  8KB

  1. Received: (from daemon@localhost) by services.bunyip.com (8.6.10/8.6.9) id PAA29056 for urn-ietf-out; Tue, 13 Aug 1996 15:55:41 -0400
  2. Received: from mocha.bunyip.com (mocha.Bunyip.Com [192.197.208.1]) by services.bunyip.com (8.6.10/8.6.9) with SMTP id PAA29051 for <urn-ietf@services.bunyip.com>; Tue, 13 Aug 1996 15:55:36 -0400
  3. Received: from mintaka.lcs.mit.edu by mocha.bunyip.com with SMTP (5.65a/IDA-1.4.2b/CC-Guru-2b)
  4.         id AA16249  (mail destined for urn-ietf@services.bunyip.com); Tue, 13 Aug 96 15:55:05 -0400
  5. Received: from skadhwe.lcs.mit.edu by MINTAKA.LCS.MIT.EDU id aa28941;
  6.           13 Aug 96 15:54 EDT
  7. Received: by skadhwe.lcs.mit.edu; (5.65/1.1.8.2/15Aug95-0306PM)
  8.     id AA03481; Tue, 13 Aug 1996 15:54:34 -0400
  9. Date: Tue, 13 Aug 1996 15:54:34 -0400
  10. Message-Id: <9608131954.AA03481@skadhwe.lcs.mit.edu>
  11. From: Lewis Girod <girod@LCS.MIT.EDU>
  12. To: jon@net.lut.ac.uk
  13. Cc: rdaniel@acl.lanl.gov, urn-ietf@bunyip.com
  14. In-Reply-To: <Pine.SUN.3.91.960813143052.8034o-100000@weeble.lut.ac.uk>
  15.     (message from Jon Knight on Tue, 13 Aug 1996 15:02:24 +0100 (BST))
  16. Subject: Re: [URN] nasty rewriting rules
  17. Sender: owner-urn-ietf@services.bunyip.com
  18. Precedence: bulk
  19. Reply-To: Lewis Girod <girod@LCS.MIT.EDU>
  20. Errors-To: owner-urn-ietf@bunyip.com
  21.  
  22.    On Tue, 13 Aug 1996 15:02:24 +0100 (BST) Jon Knight wrote
  23.  
  24.    Regexp interpreters are already available in source code format that you 
  25.    can just plug and play on many current platforms and which will ease 
  26.    porting to new architectures.
  27.  
  28. Fair enough, although it is important to have agreement as to what
  29. flavor of regexps are being used.  The original plan was to just
  30. execute sed, which solves both issues on UNIX platforms, but requires
  31. a little more work otherwise.
  32.  
  33.    > There are two questions here.  First, this statement is only true
  34.    > given that the structure of the name scheme actually remains
  35.    > consistent with this set stucture in the context of NAPTR (this gets
  36.    > back to point (1) above).  If they were resolved with NAPTR using
  37.    > regexps little would prevent someone from changing the format of an
  38.    > ISBN in various ways; there is no technical impediment to this, and if
  39.    > the top level ISBN naming authority doesn't want it to happen their
  40.    > only recourse is legal.
  41.  
  42.    Surely though as long as the end users are using "legal" ISBNs in their
  43.    URNs, the rewriting that happens is just the business of the people
  44.    "owning" that ISBN and their resolution agents (might be one and same
  45.    thing in some cases).  If the resolution agents at the top level of a
  46.    naming authority reject "illegal" constructs in that scheme that they
  47.    might get given, people will soon get the idea and stop using them.
  48.  
  49. Oops, thanks for catching that bug.  Yes, it is sufficient to reject
  50. malformed URNs at the top level, and as you say that fixes the
  51. problem.  As a rule, this can be done using regexps (although I have
  52. heard of no plans to do so).  The fact remains that unless such
  53. syntax-checking regexps are actually implemented at the top level,
  54. there is no guarantee that a namespace will retain a set structure.
  55.                                                                        If
  56.    the top level naming authority never see the "illegal" rewritten versions
  57.    then that's fine as it means that the rewriting is happening in private
  58.    lower down the resolution tree.  
  59.  
  60. Remember, the rewrite rules are rewriting URNs into domain names, not
  61. into other URNs -- so a URN is either legal or illegal from the start.
  62. The concern is that names could be added to the namespace which don't
  63. conform to the name scheme as defined, but which would still be
  64. resolved by the system.  If unpleasant contortions are required to
  65. perform the resolution downstream it may make the name scheme harder
  66. to migrate as a whole.  The question is whether the flexibility that
  67. makes this possible is neccessary.
  68.  
  69.                                     I'd say that "enforcement" is just a
  70.    private thing within a particular naming scheme resolution tree and isn't
  71.    something we should be dipping our toes into (not if we want URNs in this
  72.    lifetime anyway).
  73.  
  74. There is some suggestion in the framework document that there be a set
  75. of requirements of new name schemes; any ``enforcement'' is limited to
  76. that sort of thing.  We have not yet figured out what requirements are
  77. to be applied, but clearly names will need to be verified somewhere to
  78. ensure that they are satisying them -- otherwise there might as well
  79. be no requirements.  So the question becomes, what requirements do we
  80. want to set?  One possible requirement for NAPTR classic might be that
  81. the syntax be defined and checked.  What I am suggesting boils down to
  82. specifying the hierarchy scheme and ensuring that the NAPTR system
  83. escape names to alternate systems as soon as the hierarchy spec is
  84. invalidated.
  85.  
  86.    > This should make it easier for
  87.    > people to learn and program in the ``language'' (if such a simple
  88.    > thing can be called a language!!) while at the same time making syntax
  89.    > errors less likely.  For example, we could use S-expressions (pardon
  90.    > my rough adherence to standard BNF form..):
  91.  
  92.    I can feel an Emacs mode coming on... :-) :-)
  93.  
  94. But of course... :-)
  95.  
  96.    > So for example, given a canonical form email address mail:edu.mit.lcs@girod
  97.    > 
  98.    >   ((eat-including ":" &replace-with "")
  99.    >    (eat-until "@" ©)
  100.    >    (eat-including "@" &replace-with ".mail-urn"))
  101.    > 
  102.    > Would ``compile'' to ``x":"+p"";x"@"-v;x"@"+p".mail-urn";'', and would
  103.    > generate the pair ("mail-urn.lcs.mit.edu", "girod").  Note that the
  104.    > translation took care of removing the ``urn:'' if it was there.  This
  105.    > or something like it should be simple enough to learn.
  106.  
  107.    And this is simpler that regexps?  As a sysadmin I'd much rather use 
  108.    something I'm already used to (ie: regexps) rather than learning (and 
  109.    making mistakes in) another new syntax.  Of course those of us that do 
  110.    want regexp are still free to have a "NAPTRclassic" (:-) ) namespace 
  111.    hived off using SRV records that does do regexp replacement, so maybe we 
  112.    can all have our cake and eat it?
  113.  
  114. I am the first to say that the terse syntax is wretched, but it was
  115. really easy to implement and it is terse enough to easily fit into a
  116. DNS response.  Humans are supposed to use the simple user-friendly
  117. syntax that compiles into the terse form.  With decent management
  118. software the underlying terse form should be transparent to the
  119. administrator -- in fact, if we can assume that everyone is using a
  120. compiler it might be a good idea to make the terse form even more
  121. compact.  As you say, you can always escape to some kind of proxy that
  122. does regexp stuff.
  123.  
  124. The explanation in that message didn't really explain the language,
  125. mainly because the terse form is explained in more detail with
  126. examples in the proposal document.  But conceptually it is pretty
  127. simple; each ``statement'' is executed in sequence, and each chops 0
  128. or more chars off the front of the string and then produces a string
  129. to catenate into a domain name.  The following specify what to chop
  130. off:
  131.  
  132. * eat-including: chops right after the first character that appears
  133.   in the specified delimiter set.
  134.  
  135. * eat-until: chops off right before the first char that appears in
  136.   the specified delimiter set.  
  137.  
  138. * eat-x-chars: eats a specified number of chars.  
  139.  
  140. * match-prefix: fails unless the specified string is a prefix of the
  141.   string, and if it matches eats the prefix.  (We may want a case-
  142.   insensitive version of this as well..)
  143.  
  144. * match-rest: fails unless the rest of the string is an exact
  145.   match, if it matches eats the rest of the string.  
  146.  
  147. Once a prefix is chopped off, it can either be replaced with a
  148. specified string (&replace-with) or copied verbatim (©).  The
  149. result strings is catenated in order and then the result is reversed
  150. to produce the domain name to look up.  For example, continuing this
  151. lisp metaphor:
  152.  
  153.   The input is eaten in the following parts:
  154.  
  155.     mail: edu.mit.lcs @ girod
  156.              ^           ^ ^
  157.           
  158.   --> (dns-reverse (catenate "" "edu.mit.lcs" ".mail-urn"))
  159.   --> (dns-reverse "edu.mit.lcs.mail-urn")
  160.   --> "mail-urn.lcs.mit.edu"
  161.  
  162.  
  163. Hope this clarifies things, and thanks a lot for the comments,
  164.  
  165.     - Lewis
  166.  
  167.  
  168.